package com.hongye.util;

import org.json.JSONException;
import org.json.JSONObject;

/**
 * 极光推送utils
 * @author liushaomin
 */
public class PushUtils {

	public static final String APPKEY = "420b536b7251ecb4f80f2eed:";
	public static final String Master_Secret  = "33db3c6ff875fabe40923b0e";//主秘钥
	public static final String V3_Push_URL = "https://api.jpush.cn/v3/push";
	public static final String Validate_Push_URL ="https://api.jpush.cn/v3/push/validate";
	
	
	/**
	 * 给全部用户推送广播
	 * @author liushaomin
	 * 2017年2月15日
	 * @param alert 内容
	 * @return
	 */
	public static String MSG_All(String alert){
		JSONObject params = new JSONObject();
		try {
			JSONObject notification = new JSONObject();
			notification.put("alert", alert);
			params.put("platform", "all");//推送平台
			params.put("audience", "all");//推送设备
			params.put("notification", notification);//通知内容体
		    return PostPush(params);
		} catch (JSONException e) {
			e.printStackTrace();
		}
		 return "";
	}
	
	/**
	 * 给单个用户推送广播
	 * @author liushaomin
	 * 2017年2月15日
	 * @param phone 别名
	 * @param title 标题
	 * @param type 通知类型   0=买到的宝贝  1=卖出的宝贝 
	 * @return
	 */
	public static String MSG_Single(String phone, String type, String title){
		JSONObject params = new JSONObject();
		try {
			params.put("platform", "all");//推送平台
			JSONObject audience = new JSONObject();
			String [] phones = {phone};
			audience.put("alias", phones);
			params.put("audience", audience);//推送目标
			
			JSONObject extras = new JSONObject();
			extras.put("type", type);
			
			JSONObject notification = new JSONObject();
			JSONObject android = new JSONObject();
			android.put("alert", title);
			android.put("extras", extras);
			notification.put("android", android);
			
			JSONObject ios = new JSONObject();
			ios.put("alert", title);
			ios.put("extras", extras);
			ios.put("sound", "default");
			notification.put("ios", ios);
			
			JSONObject winphone = new JSONObject();
			winphone.put("alert", title);
			winphone.put("extras", extras);
			notification.put("winphone", winphone);
			
			JSONObject options = new JSONObject();
			options.put("apns_production", true);
			params.put("options", options);
			
			params.put("notification", notification);//通知标题
		    return PostPush(params);
		} catch (JSONException e) {
			e.printStackTrace();
		}
		 return "";
	}
	
	/**
	 * 给特定平台用户推送广播
	 * @author liushaomin
	 * 2017年2月15日
	 * @param site 平台
	 * @param title 标题
	 * @return
	 */
	public static String MSG_Site(String site, String title){
		JSONObject params = new JSONObject();
		try {
			JSONObject platform = new JSONObject();
			String [] phones = {site};
			platform.put("alias", phones);
			params.put("platform", platform);//推送平台
			params.put("audience", "all");//推送目标
			JSONObject notification = new JSONObject();
			notification.put("alert", title);
			params.put("notification", notification);//通知内容体
		    return PostPush(params);
		} catch (JSONException e) {
			e.printStackTrace();
		}
		 return "";
	}
	
	/**
	 * 给特定标签用户推送消息
	 * @author liushaomin
	 * 2017年2月15日
	 * @param usertype 商家/买家
	 * @param title 标题
	 * @return
	 */
	public static String MSG_UserType(String usertype, String title){
		JSONObject params = new JSONObject();
		try {
			params.put("platform", "all");//推送平台
			JSONObject audience = new JSONObject();
			String [] types = {usertype};
			audience.put("tag", types);	
			params.put("audience", audience);//推送目标
			JSONObject notification = new JSONObject();
			notification.put("alert", title);
			params.put("notification", notification);//通知内容体
		    return PostPush(params);
		} catch (JSONException e) {
			e.printStackTrace();
		}
		 return "";
	}
	
	
	
	/**
	 * 调用推送接口
	 * 调用推送校验接口 
	 * V3_Push_URL  向用户发送消息
	 * Validate_Push_URL 只用于验证推送调用是否能够成功，不向用户发送任何消息
	 * @author liushaomin
	 * 2017年2月15日
	 * @param params
	 * @return
	 */
	public static String PostPush(JSONObject params){
		String token = Utils.base64(APPKEY + Master_Secret, "utf-8");
		HttpUtils.HttpURL(V3_Push_URL, params, "POST", "Basic " + token);
		return HttpUtils.HttpURL(Validate_Push_URL, params, "POST", "Basic " + token);
	}
}
